package com.mingqijia.gassafety.webserver.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.mingqijia.gassafety.db.entity.RunningReport;
import com.mingqijia.gassafety.shared.utils.commonUtils.PageUtil;
import com.mingqijia.gassafety.webserver.request.ConsumerListRequest;
import com.mingqijia.gassafety.webserver.request.RunningReportRequest;
import com.mingqijia.gassafety.webserver.request.runningReport.RunningReportEditPreviewRequest;
import com.mingqijia.gassafety.webserver.response.*;
import com.mingqijia.gassafety.webserver.response.runningReport.RunningReportDeviceListResponse;
import com.mingqijia.gassafety.webserver.response.runningReport.RunningReportPreviewResponse;

import java.util.List;

/**
 * <p>
 * 运行报告管理 服务类
 * </p>
 *
 * @author mby
 * @since 2024-03-11
 */
public interface RunningReportService extends IService<RunningReport> {

    /**
     * tab统计数量
     * @param request
     * @return
     */
    List<StateCountResponse> runningReportTab(RunningReportRequest request);

    /**
     * 是否可全部重新生成
     * @param reportDate
     * @return
     */
    Integer canGenerate(String reportDate);

    /**
     * 是否可全部下载
     * @param reportDate
     * @return
     */
    Integer canDownload(String reportDate);


    /**
     * 条件分页查询
     * @param request
     * @return
     */
    PageUtil<RunningReportResponse> runningReportList(RunningReportRequest request);

    /**
     * 查询该企业拥有的用户类型
     * @return
     */
    List<String> getCustTypeList();

    /**
     * 根据id得到详情
     * @param id
     * @return
     */
    RunningReportDetailResponse detail(Integer id);

    /**
     * 更新数据
     * @param id
     */
    void updateData(Integer id);

    /**
     * 批量更新数据
     * @param ids
     */
    Integer batchUpdateData(List<Integer> ids);

    /**
     * 全部更新数据
     * @param reportDate
     */
    Integer allUpdateData(String reportDate);

    /**
     * 审核
     * @param id
     */
    void check(Integer id);

    /**
     * 批量审核
     * @param ids
     */
    Integer batchCheck(List<Integer> ids);

    /**
     * 全部审核
     * @param reportDate
     */
    Integer allCheck(String reportDate);

    /**
     * 下载
     * @param id
     */
    void download(Integer id);

    /**
     * 批量下载
     * @param ids
     */
    void batchDownload(List<Integer> ids);

    /**
     * 全部下载
     * @param reportDate
     */
    void allDownload(String reportDate);

    /**
     * 重新生成报告
     * @param reportDate
     */
    void regenerate(String reportDate);

    /**
     * 根据客户id查询设备列表
     * @param consumerId
     */
    List<RunningReportDeviceListResponse> queryDeviceListByConsumerId(Integer consumerId);

    /**
     * C端预览查看
     * @param id
     */
    RunningReportPreviewResponse runningReportPreviewDetail(Integer id);

    /**
     * C端预览编辑
     * @param request
     */
    void editRunningReportPreview(RunningReportEditPreviewRequest request);

}
